

<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=auto>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/favicon.png">
  <link rel="icon" href="/img/favicon.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="author" content="Fly542">
  <meta name="keywords" content="">
  
    <meta name="description" content="systemd 配置路径systemd 配置文件存在于以下三个文件夹中：            &#x2F;etc&#x2F;systemd&#x2F;system  存放系统启动的默认级别及启动的unit的软连接，优先级最高。 &#x2F;run&#x2F;systemd&#x2F;system 系统执行过程中产生的服务脚本，优先级次之。 &#x2F;usr&#x2F;lib&#x2F;systemd&#x2F;system 存放系统上所有的启动文件。优先级最低   systemd文件分类sy">
<meta property="og:type" content="article">
<meta property="og:title" content="systemd配置文件及管理方法">
<meta property="og:url" content="http://fly542.cn/2022/04/01/04DevOps/16systemd%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%8F%8A%E7%AE%A1%E7%90%86%E6%96%B9%E6%B3%95/index.html">
<meta property="og:site_name" content="Fly542 技术沉淀">
<meta property="og:description" content="systemd 配置路径systemd 配置文件存在于以下三个文件夹中：            &#x2F;etc&#x2F;systemd&#x2F;system  存放系统启动的默认级别及启动的unit的软连接，优先级最高。 &#x2F;run&#x2F;systemd&#x2F;system 系统执行过程中产生的服务脚本，优先级次之。 &#x2F;usr&#x2F;lib&#x2F;systemd&#x2F;system 存放系统上所有的启动文件。优先级最低   systemd文件分类sy">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2022-04-01T02:49:50.000Z">
<meta property="article:modified_time" content="2022-12-30T03:33:01.438Z">
<meta property="article:author" content="Fly542">
<meta property="article:tag" content="linux">
<meta name="twitter:card" content="summary_large_image">
  
  
  <title>systemd配置文件及管理方法 - Fly542 技术沉淀</title>

  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css@4/github-markdown.min.css" />
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hint.css@2/hint.min.css" />

  
    
    
      
      <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@10/styles/github-gist.min.css" />
    
  

  
    <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.css" />
  


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css">


<link  rel="stylesheet" href="/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    var CONFIG = {"hostname":"fly542.cn","root":"/","version":"1.8.14","typing":{"enable":true,"typeSpeed":70,"cursorChar":"_","loop":false},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"right","visible":"hover","icon":""},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"copy_btn":true,"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":0},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":false,"baidu":null,"google":null,"gtag":null,"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname","ignore_local":false}},"search_path":"/local-search.xml"};
  </script>
  <script  src="/js/utils.js" ></script>
  <script  src="/js/color-schema.js" ></script>
<meta name="generator" content="Hexo 6.0.0"></head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/">
      <strong>Fly542 技术沉淀</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/">
                <i class="iconfont icon-home-fill"></i>
                首页
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/archives/">
                <i class="iconfont icon-archive-fill"></i>
                归档
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/categories/">
                <i class="iconfont icon-category-fill"></i>
                分类
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/tags/">
                <i class="iconfont icon-tags-fill"></i>
                标签
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/about/">
                <i class="iconfont icon-user-fill"></i>
                关于
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              &nbsp;<i class="iconfont icon-search"></i>&nbsp;
            </a>
          </li>
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">&nbsp;<i
                class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="banner" id="banner" parallax=true
         style="background: url('/img/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="page-header text-center fade-in-up">
            <span class="h2" id="subtitle" title="systemd配置文件及管理方法">
              
            </span>

            
              <div class="mt-3">
  
  
    <span class="post-meta">
      <i class="iconfont icon-date-fill" aria-hidden="true"></i>
      <time datetime="2022-04-01 10:49" pubdate>
        2022年4月1日 上午
      </time>
    </span>
  
</div>

<div class="mt-1">
  
    <span class="post-meta mr-2">
      <i class="iconfont icon-chart"></i>
      7.3k 字
    </span>
  

  
    <span class="post-meta mr-2">
      <i class="iconfont icon-clock-fill"></i>
      
      
      62 分钟
    </span>
  

  
  
</div>

            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid nopadding-x">
  <div class="row nomargin-x">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-x-md">
      <div class="container nopadding-x-md" id="board-ctn">
        <div class="py-5" id="board">
          <article class="post-content mx-auto">
            <!-- SEO header -->
            <h1 style="display: none">systemd配置文件及管理方法</h1>
            
            <div class="markdown-body">
              <h1 id="systemd-配置路径"><a href="#systemd-配置路径" class="headerlink" title="systemd 配置路径"></a>systemd 配置路径</h1><p>systemd 配置文件存在于以下三个文件夹中：          </p>
<ul>
<li>/etc/systemd/system  存放系统启动的默认级别及启动的unit的软连接，优先级最高。</li>
<li>/run/systemd/system 系统执行过程中产生的服务脚本，优先级次之。</li>
<li>/usr/lib/systemd/system 存放系统上所有的启动文件。优先级最低</li>
</ul>
<h1 id="systemd文件分类"><a href="#systemd文件分类" class="headerlink" title=" systemd文件分类"></a><span id="unit"> systemd文件分类</span></h1><p>systemd的定义文件可以根据其后缀名称识别其定义的类型，可以使用systemctl -t help 查看。</p>
<table>
<thead>
<tr>
<th>文件后缀名</th>
<th align="center">说明</th>
</tr>
</thead>
<tbody><tr>
<td>.service</td>
<td align="center">定义了系统服务的启动</td>
</tr>
<tr>
<td>.target</td>
<td align="center">定义了系统启动的级别标签，systemd 没有运行级别的概念，创建标签只是为了兼容老版本。</td>
</tr>
<tr>
<td>.socket</td>
<td align="center">定义了进程通信用到的套接字，套接字与进程是分离的</td>
</tr>
<tr>
<td>.device</td>
<td align="center">定义了系统启动时内核识别的文件，systemd提供了设备的管理功能，/dev 下的设备由/etc/udev/下的配置文件与.device共同定制</td>
</tr>
<tr>
<td>.mount</td>
<td align="center">定义了系统的文件系统的挂载点</td>
</tr>
<tr>
<td>.snapshop</td>
<td align="center">系统快照</td>
</tr>
<tr>
<td>.swap</td>
<td align="center">用于标识swap设备</td>
</tr>
<tr>
<td>.automount</td>
<td align="center">文件系统的自动挂载点</td>
</tr>
<tr>
<td>.path</td>
<td align="center">用于定义文件系统中的一个文件或目录使用。常用于文件系统发生变化时，延迟激活服务。</td>
</tr>
<tr>
<td>.busname</td>
<td align="center"></td>
</tr>
<tr>
<td>.snapshot</td>
<td align="center"></td>
</tr>
<tr>
<td>.timer</td>
<td align="center"></td>
</tr>
<tr>
<td>.slice</td>
<td align="center"></td>
</tr>
<tr>
<td>.scope</td>
<td align="center"></td>
</tr>
</tbody></table>
<h1 id="systemd-文件内容格式"><a href="#systemd-文件内容格式" class="headerlink" title="systemd 文件内容格式"></a>systemd 文件内容格式</h1><p>通常由3段组成：分别是unit段，类型段，install段</p>
<figure class="highlight csharp"><table><tr><td class="gutter"><div class="code-wrapper"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></div></td><td class="code"><pre><code class="hljs csharp"><span class="hljs-meta"># Unit段</span><br>[<span class="hljs-meta">Unit</span>]<br>	xxx=<br>	<br><span class="hljs-meta"># 类型段</span><br>[<span class="hljs-meta">类型</span>] 如Service、Path等，和unit分类中的后缀名对应<br><br><span class="hljs-meta"># Install 段</span><br>[<span class="hljs-meta">Install</span>]<br></code></pre></td></tr></table></figure>

<h2 id="Unit-段"><a href="#Unit-段" class="headerlink" title="Unit 段"></a>Unit 段</h2><p>[Unit] :不属于第二个标签的定义都放在这里，或存放不属于unit类型的定义，描述信息，依赖的unit</p>
<table>
<thead>
<tr>
<th>关键字</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>Description</td>
<td>描述信息</td>
</tr>
<tr>
<td>After</td>
<td>表明需要依赖的服务，作用决定启动顺序</td>
</tr>
<tr>
<td>Before</td>
<td>表明被依赖的服务</td>
</tr>
<tr>
<td>Requles</td>
<td>依赖到的其他unit ，强依赖，即依赖的unit启动失败。该unit不启动。</td>
</tr>
<tr>
<td>Wants</td>
<td>依赖到的其他unit，弱依赖，即依赖的unit 启动失败。该unit继续启动</td>
</tr>
<tr>
<td>Conflicts</td>
<td>定义冲突关系</td>
</tr>
</tbody></table>
<h2 id="类型-段："><a href="#类型-段：" class="headerlink" title="[类型] 段："></a>[类型] 段：</h2><p>类型段根据<a href="#unit">systemd文件分类</a>中定义的服务类型来确定具体的关键字，如.service文件则此段为[Service], .timer文件此段为[Timer] 等</p>
<h3 id="Service段-关键字说明如下"><a href="#Service段-关键字说明如下" class="headerlink" title="Service段 关键字说明如下"></a>Service段 关键字说明如下</h3><table>
<thead>
<tr>
<th>关键字</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>Type</td>
<td>启动时关系的定义</td>
</tr>
<tr>
<td>RemainAfterExit</td>
<td>可设为”yes”或”no”(默认值)，表示当该服务的所有进程全部退出之后，是否依然将此服务视为活动(active)状态</td>
</tr>
<tr>
<td>PIDFile</td>
<td>守护进程的PID文件，必须是绝对路径。强烈建议在 Type=forking 的情况下明确设置此选项。 systemd 将会在此服务启动后从此文件中读取主守护进程的PID 。systemd 不会写入此文件，但会在此服务停止后删除它(若存在)。</td>
</tr>
<tr>
<td>GuessMainPID</td>
<td>可设为”yes”(默认值)或”no”，表示在无法明确定位该服务的主进程的情况下，systemd 是否应该猜测主进程的PID(可能不正确)。 该选项仅在设置了 Type=forking 但未设置 PIDFile= 的情况下有意义。如果PID猜测错误，那么该服务的失败检测与自动重启功能将失效。</td>
</tr>
<tr>
<td>EnvironmentFile</td>
<td>需要使用到的变量的定义文件</td>
</tr>
<tr>
<td>ExecStart</td>
<td>在启动该服务时需要执行的命令行(命令+参数)。有关命令行的更多细节可参见后文的”命令行”小节。 仅在设置了 Type=oneshot 的情况下，才可以设置任意个命令行(包括零个)，否则必须且只能设置一个命令行。 多个命令行既可以在同一个 ExecStart= 中设置，也可以通过设置多个 ExecStart= 来达到相同的效果。 如果设为一个空字符串，那么先前设置的所有命令行都将被清空。 如果不设置任何 ExecStart= 指令，那么必须确保设置了 RemainAfterExit=yes 指令。 命令行必须以一个绝对路径表示的可执行文件开始，并且其后的那些参数将依次作为”argv[1] argv[2] …”传递给被执行的进程。 如果在绝对路径前加上可选的”@”前缀，那么其后的那些参数将依次作为”argv[0] argv[1] argv[2] …”传递给被执行的进程。 如果在绝对路径前加上可选的”-“前缀，那么即使该进程以失败状态(例如非零的返回值或者出现异常)退出，也会被视为成功退出。 可以同时使用”-“与”@”前缀，且顺序任意。 如果设置了多个命令行，那么这些命令行将以其在单元文件中出现的顺序依次执行。 如果某个无”-“前缀的命令行执行失败，那么剩余的命令行将不会被执行，同时该单元将变为失败(failed)状态。 当未设置 Type=forking 时，这里设置的命令行所启动的进程将被视为该服务的主守护进程。</td>
</tr>
<tr>
<td>ExecReload</td>
<td>这是一个可选的指令，用于设置当该服务被要求重新载入配置时所执行的命令行。语法规则与 ExecStart= 完全相同。 另外，还有一个特殊的环境变量 $MAINPID 可以用于表示主进程的PID，例如可以这样使用： /bin/kill -HUP $MAINPID 注意，像上例那样，通过向守护进程发送复位信号，强制其重新加载配置文件，并不是一个好习惯。 因为这是一个异步操作，所以不适用于需要按照特定顺序重新加载配置文件的服务。 我们强烈建议将 ExecReload= 设置为一个能够确保重新加载配置文件的操作同步完成的命令行。</td>
</tr>
<tr>
<td>ExecStop</td>
<td>这是一个可选的指令，用于设置当该服务被要求停止时所执行的命令行。语法规则与 ExecStart= 完全相同。 执行完此处设置的命令行之后，该服务所有剩余的进程将会根据 KillMode= 的设置被杀死(参见 systemd.kill(5) 手册)。 如果未设置此选项，那么当此服务被停止时，该服务的所有进程都将会根据 KillMode= 的设置被立即全部杀死。 与 ExecReload= 一样，也有一个特殊的环境变量 $MAINPID 可以用于表示主进程的PID 一般来说，仅仅设置一个结束服务的命令，而不等待其完成，是不够的。 因为当此处设置的命令执行完之后，剩余的进程会被 SIGKILL 信号立即杀死，这可能会导致数据丢失。 因此，这里设置的命令必须是同步操作，而不能是异步操作。</td>
</tr>
<tr>
<td>ExecStopPost</td>
<td>这是一个可选的指令，用于设置该服务停止之后所执行的命令行。语法规则与 ExecStart= 完全相同。 无论此服务是正常停止，还是异常退出，此处的设置都适用。 RestartSec= 设定在重启服务(Restart=)前暂停多长时间。默认值是100毫秒(100ms)。 如果未指定时间单位，那么将视为以秒为单位。例如设为”20”等价于设为”20s”。</td>
</tr>
<tr>
<td>ExecStartPre、ExecStartPost</td>
<td>设置在执行 ExecStart= 之前/后执行的命令行。语法规则与 ExecStart= 完全相同。 如果设置了多个命令行，那么这些命令行将以其在单元文件中出现的顺序依次执行。 如果某个无”-“前缀的命令行执行失败，那么剩余的命令行将不会被执行，同时该单元将变为失败(failed)状态。 仅在所有无”-“前缀的 ExecStartPre= 命令全部执行成功的前提下，才会继续执行 ExecStart= 命令。 ExecStartPost= 命令仅在服务已经被成功启动之后才会运行，判断的标准基于 Type= 选项。 具体说来，对于 Type=simple 或 Type=idle 就是主进程已经成功启动；对于 Type=oneshot 来说就是主进程已经成功退出； 对于 Type=forking 来说就是初始进程已经成功退出；对于 Type=notify 来说就是已经发送了”READY=1”； 对于 Type=dbus 来说就是已经取得了 BusName= 中设置的总线名称。 注意，不可将 ExecStartPre= 用于需要长时间执行的进程。 因为所有由 ExecStartPre= 派生的子进程都会在启动 ExecStart= 服务进程之前被杀死。</td>
</tr>
<tr>
<td>TimeoutStartSec</td>
<td>设定该服务允许的最大启动时长。如果守护进程未能在限定的时长内发出”启动完毕”的信号，那么该服务将被视为启动失败，并会被关闭。 如果未指定时间单位，那么将视为以秒为单位。例如设为”20”等价于设为”20s”。设为”0”则表示永不超时。 当 Type=oneshot 时，默认值为”0”，否则默认值等于 DefaultTimeoutStartSec= 的值(参见 systemd-system.conf(5) 手册)。</td>
</tr>
<tr>
<td>TimeoutStopSec</td>
<td>设定该服务允许的最大停止时长。如果该服务未能在限定的时长内成功停止，那么将会被强制使用 SIGTERM 信号关闭， 如果依然未能在相同的时长内成功停止，那么将会被强制使用 SIGKILL 信号关闭(参见 systemd.kill(5) 手册中的 KillMode= 选项)。 如果未指定时间单位，那么将视为以秒为单位。例如设为”20”等价于设为”20s”。设为”0”则表示永不超时。 默认值等于 DefaultTimeoutStartSec= 的值(参见 systemd-system.conf(5) 手册)。</td>
</tr>
<tr>
<td>TimeoutSec</td>
<td>一个同时设置 TimeoutStartSec= 与 TimeoutStopSec= 的快捷方式。</td>
</tr>
<tr>
<td>Restart</td>
<td>当服务进程正常退出、异常退出、被杀死、超时的时候，是否重新启动该服务。 “服务进程”是指 ExecStart=, ExecStartPre=, ExecStartPost=, ExecStop=, ExecStopPost=, ExecReload= 中设置的进程。 当进程是由于 systemd 的正常操作(例如 systemctl stop restart)而被停止时，该服务不会被重新启动。 “超时”可以是看门狗的”keep-alive ping”超时，也可以是 systemct  start /reload/stop 操作超时。<br>该选项可以取下列值之一：no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, always “no”(默认值)表示不会被重启。”always”表示会被无条件的重启。 “on-success”表示仅在服务进程正常退出时重启，所谓”正常退出”是指： 退出码为”0”，或者进程收到 SIGHUP, SIGINT, SIGTERM, SIGPIPE 信号并且退出码符合 SuccessExitStatus= 的设置。 “on-failure”表示仅在服务进程异常退出时重启，所谓”异常退出”是指： 退出码不为”0”，或者进程被强制杀死(包括”core dump”以及收到 SIGHUP, SIGINT, SIGTERM, SIGPIPE 之外的其他信号)， 或者进程由于看门狗或者 systemd 的操作超时而被杀死。 对于 on-failure, on-abnormal, on-abort, on-watchdog 的分别适用于哪种异常退出，见下表：<br>注意如下两个例外情况： (1) RestartPreventExitStatus= 中列出的退出码或者信号永远不会导致该服务被重启。 (2) RestartForceExitStatus= 中列出的退出码或者信号将会无条件的导致该服务被重启。 对于需要长期持续运行的守护进程，推荐设为”on-failure”以增强可用性。 对于自身可以自主选择何时退出的服务，推荐设为”on-abnormal”。</td>
</tr>
<tr>
<td>RestartSec</td>
<td></td>
</tr>
<tr>
<td>BusName</td>
<td>设置与此服务通信所使用的 D-Bus 名称。在 Type=dbus 的情况下必须明确设置此选项。</td>
</tr>
<tr>
<td>BusPolicy</td>
<td>如果设置了此项，那么 systemd 将会创建一个自定义的kdbus端点(endpoint)，并将其安装为该服务默认的总线节点(bus node)。 这个自定义的端点可以拥有它自己的策略规则。端点的名称就是其所服务的单元的名称。 端点的节点(node)将被绑定挂载到默认的总线节点的位置，这样该服务就只能通过它自己的端点访问总线。 注意，自定义端点的默认策略是’拒绝所有’，因此，你必须在 BusPolicy= 中明确的添加必要的允许策略。 这个选项的值由两部分组成：总线名+访问级别，中间以空格分隔。 访问级别必须是 see, talk, own 之一，并且 talk 隐含了 see ，而 own 隐含了 talk 与 see 。 如果对同一个总线名称多次指定了访问级别，那么将以拥有最大权限的那个为准。 例如： BusPolicy=org.freedesktop.systemd1 talk BusPolicy=org.foo.bar see 该选项仅在内核开启了kdbus(即将并入官方内核)支持的情况下有意义。</td>
</tr>
</tbody></table>
<p>Restart设置及对应的退出原因</p>
<table>
<thead>
<tr>
<th>Restart</th>
<th>no</th>
<th>always</th>
<th>on-success</th>
<th>on-failure</th>
<th>on-abnormal</th>
<th>on-abort</th>
<th>on-watchdog</th>
</tr>
</thead>
<tbody><tr>
<td>正常退出</td>
<td></td>
<td>×</td>
<td>×</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>退出码不为0</td>
<td></td>
<td>×</td>
<td></td>
<td>×</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>进程被强制杀死</td>
<td></td>
<td>×</td>
<td></td>
<td>×</td>
<td>×</td>
<td>×</td>
<td></td>
</tr>
<tr>
<td>systemd操作超时</td>
<td></td>
<td>×</td>
<td></td>
<td>×</td>
<td>×</td>
<td></td>
<td></td>
</tr>
<tr>
<td>看门狗超时</td>
<td></td>
<td>×</td>
<td></td>
<td>×</td>
<td>×</td>
<td></td>
<td>×</td>
</tr>
</tbody></table>
<h4 id="Type-关键字说明"><a href="#Type-关键字说明" class="headerlink" title="Type 关键字说明"></a>Type 关键字说明</h4><table>
<thead>
<tr>
<th>关键字</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>simple</td>
<td>表示 ExecStart= 所设定的进程就是该服务的主进程。 如果此进程需要为其他进程提供服务，那么必须在该进程启动之前先建立好通信渠道(例如套接字)，以加快后继单元的启动速度</td>
</tr>
<tr>
<td>forking</td>
<td>如果设为”forking”，那么表示 ExecStart= 所设定的进程将会在启动过程中使用 fork() 系统调用。这是传统UNIX守护进程的经典做法。 也就是当所有的通信渠道都已建好、启动亦已成功之后，父进程将会退出，而子进程将作为该服务的主进程继续运行。 对于此种进程，建议同时设置 PIDFile= 选项，以帮助 systemd 准确定位该服务的主进程，进而加快后继单元的启动速度。</td>
</tr>
<tr>
<td>ontshot</td>
<td>“oneshot”(未设置 ExecStart= 时的默认值)与”simple”类似，不同之处在于该进程必须在 systemd 启动后继单元之前退出。 此种类型通常需要设置 RemainAfterExit= 选项</td>
</tr>
<tr>
<td>dbus</td>
<td>“dbus”(设置了 ExecStart= 与 BusName= 时的默认值)与”simple”类似，不同之处在于该进程需要在 D-Bus 上获得一个由 BusName= 指定的名称。 systemd 将会在启动后继单元之前，首先确保该进程已经成功的获取了指定的 D-Bus 名称。设置为此类型相当于隐含的依赖于 dbus.socket 单元</td>
</tr>
<tr>
<td>notify</td>
<td>“notify”与”simple”类似，不同之处在于该进程将会在启动完成之后通过 sd_notify(3) 之类的接口发送一个通知消息。 systemd 将会在启动后继单元之前，首先确保该进程已经成功的发送了这个消息。 如果设置为此类型，那么 NotifyAccess= 将只能设置为”all”或者”main”(默认)。 注意，目前 Type=notify 尚不能在 PrivateNetwork=yes 的情况下正常工作。</td>
</tr>
<tr>
<td>ldle</td>
<td>“idle”与”simple”类似，不同之处在于该进程将会被延迟到所有的操作都完成之后再执行。 这样可以避免控制台上的状态信息与 shell 脚本的输出混杂在一起。</td>
</tr>
</tbody></table>
<h3 id="Timer-段关键字说明如下"><a href="#Timer-段关键字说明如下" class="headerlink" title="Timer 段关键字说明如下"></a>Timer 段关键字说明如下</h3><table>
<thead>
<tr>
<th>关键字</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>aa</td>
<td>aa</td>
</tr>
</tbody></table>
<h3 id="Mount-段关键字说明如下"><a href="#Mount-段关键字说明如下" class="headerlink" title="Mount 段关键字说明如下"></a>Mount 段关键字说明如下</h3><table>
<thead>
<tr>
<th>关键字</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>aa</td>
<td>aa</td>
</tr>
</tbody></table>
<h2 id="Install-段："><a href="#Install-段：" class="headerlink" title="[Install] 段："></a>[Install] 段：</h2><p>服务启动或禁用时的一些选项，有以下配置选项</p>
<table>
<thead>
<tr>
<th>关键字</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>Alias</td>
<td></td>
</tr>
<tr>
<td>RequlredBy</td>
<td>被那些unit所依赖，</td>
</tr>
<tr>
<td>WanteBy</td>
<td>被那些unit所依赖</td>
</tr>
</tbody></table>
<blockquote>
<p>注意：修改了的unit文件 需要重载。systemctl daemon-reload</p>
</blockquote>
<h1 id="管理工具systemctl"><a href="#管理工具systemctl" class="headerlink" title="管理工具systemctl"></a>管理工具systemctl</h1><p>centos7 的程序管理基本上都是由工具systemctl完成，systemctl的控制命令是固定不变的。systemd 兼容init文件夹下的启动脚本。</p>
<p>systemctl的管理服务通过的service的unit文件实现的。</p>
<p>.service 的配置文件对应的服务提供一下服务命令</p>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>systemctl start name.service</td>
<td>启动服务：</td>
</tr>
<tr>
<td>systemctl stop name.service</td>
<td>停止服务</td>
</tr>
<tr>
<td>systemctl restart name.service</td>
<td>重启服务</td>
</tr>
<tr>
<td>systemctl status name.service</td>
<td>查看状态</td>
</tr>
<tr>
<td>ystemctl try-restart name.service</td>
<td>条件式重启，即服务之前是启动的则进行重启，如果服务没有启动则不进行操作</td>
</tr>
<tr>
<td>systemctl reload-or-restart name.service</td>
<td>重载或重启，首先进行重载，如果重载不成功则进行重启</td>
</tr>
<tr>
<td>systemctl reload-or-try-restart name.service</td>
<td>重载或条件式重启:</td>
</tr>
<tr>
<td>systemctl unmask name.service</td>
<td>设置服务可以被用户设置开机启动状态</td>
</tr>
<tr>
<td>systemctl mask name.service</td>
<td>禁止服务可以被用户设置开机启动状态</td>
</tr>
<tr>
<td>systemctl is-active name.service</td>
<td>查看服务的当前激活状态<br>0 服务已经启动 <br> 非0 命令未启动</td>
</tr>
<tr>
<td>systemctl disable 服务名称unit</td>
<td>设置服务开机不启动</td>
</tr>
<tr>
<td>systemctl is-enabled name.service</td>
<td>查看服务是否开机自启</td>
</tr>
<tr>
<td>systemctl list-dependencies name.service</td>
<td>察看服务的依赖关系</td>
</tr>
<tr>
<td>systemctl list-depebdencies</td>
<td>察看服务的依赖关系</td>
</tr>
<tr>
<td>systemctl daemon-reload</td>
<td>重载服务：</td>
</tr>
<tr>
<td>systemctl kill 进程名</td>
<td>杀掉进程：</td>
</tr>
</tbody></table>
<h1 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h1><ul>
<li><a target="_blank" rel="noopener" href="https://blog.51cto.com/arm2012/1963238">https://blog.51cto.com/arm2012/1963238</a></li>
<li><a target="_blank" rel="noopener" href="https://man7.org/linux/man-pages/man5/systemd.service.5.html">https://man7.org/linux/man-pages/man5/systemd.service.5.html</a></li>
<li><a target="_blank" rel="noopener" href="https://man7.org/linux/man-pages/man1/systemd.1.html">https://man7.org/linux/man-pages/man1/systemd.1.html</a></li>
<li><a target="_blank" rel="noopener" href="https://blog.csdn.net/yuesichiu/article/details/51485147">https://blog.csdn.net/yuesichiu/article/details/51485147</a></li>
</ul>

            </div>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                  <div class="post-meta mr-3">
                    <i class="iconfont icon-category"></i>
                    
                      <a class="hover-with-bg" href="/categories/devops/">devops</a>
                    
                  </div>
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/tags/linux/">linux</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">
                  
                    本博客所有文章除特别声明外，均采用 <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" rel="nofollow noopener noopener">CC BY-SA 4.0 协议</a> ，转载请注明出处！
                  
                </p>
              
              
                <div class="post-prevnext">
                  <article class="post-prev col-6">
                    
                    
                      <a href="/2022/04/06/03%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/07%E5%BA%94%E7%94%A8%E8%BD%AF%E4%BB%B6/00OpenResty(nginx+lua)%E5%9F%BA%E7%A1%80/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">OpenResty(nginx+lua)基础 (转载)</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/2022/03/16/03%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/%E5%BE%85%E5%AE%8C%E5%96%84/yacc%E4%B8%8Elex/">
                        <span class="hidden-mobile">yacc与lex</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            
          </article>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p>
  <div class="toc-body" id="toc-body"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
    

    
  </main>

  <footer class="text-center mt-5 py-3">
  <div class="footer-content">
     <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> 
  </div>
  

  

  
</footer>


  <!-- SCRIPTS -->
  
  <script  src="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js" ></script>
<script  src="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/js/bootstrap.min.js" ></script>
<script  src="/js/events.js" ></script>
<script  src="/js/plugins.js" ></script>

<!-- Plugins -->


  <script  src="/js/local-search.js" ></script>



  
    <script  src="/js/img-lazyload.js" ></script>
  



  



  
    <script  src="https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/anchor-js@4/anchor.min.js" ></script>
  
  
    <script defer src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js" ></script>
  






  <script  src="https://cdn.jsdelivr.net/npm/typed.js@2/lib/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var title = document.getElementById('subtitle').title;
      
        typing(title);
      
    })(window, document);
  </script>















<!-- 主题的启动项 保持在最底部 -->
<script  src="/js/boot.js" ></script>


</body>
</html>
